技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
15
0
佛心分享-IT 人自學之術
從零開始的MySQL開發旅程
系列 第
15
篇
Day15專題二 利用觸發器追蹤投票者資料異動(中)
16th鐵人賽
minhsiao
2024-09-02 23:26:59
372 瀏覽
分享至
專題二 加入Before型觸發器(在資料異動前觸發)
目的:防止不符合試務規則的資料被寫入資料表中,來確保投票人沒有過度投票或是圈選出的候選人超過該項所允許的圈選人數
做法:資料表voter、race、candidate需要設定為只有特定人員才可以對內容進行異動,要防止其他使用者對這三個資料表做修改。
BI型觸發器
要防止其他人員對資料表voter、race、candidate插入資料
tr_voter_bi
防止其他使用者插入投票人的資料
檢查使用者名稱是否帶有secretary_of_state,若沒有會用signal陳述式傳送錯誤訊息,並以語法set message_text來顯示我們要表達的句子
tr_race_bi
防止其他使用者插入競選職務的資料
寫法如tr_voter_bi
tr_candidate_bi
防止其他使用者插入候選人的資料
寫法如tr_voter_bi
tr_ballot_cnadidate
防止投票人在同一選票上投給太多人
需要先檢查該競選職務允許選民投給幾個人,在看這張選票和競選職務檢查資料表ballot_cnadidate出現幾列資料,如果超出允許人數就會阻止插入資料表
宣告五個變數v_race_id(保存競選職務ID)、v_votes_allowed(保存可允許投給幾位)、 v_existing_votes(保存選民真實圈選幾個人)、v_race_name(保存競選職務名稱)、v_error_msg(保存要顯示給使用者看的錯誤訊息)
第一個select...into陳述式,取的該候選人參與哪一項競選職務,將資料表race行合併查詢race_id、v_race_name、r.race_allowed_num的值寫入變數
第二個select陳述式,從資料表ballot_cnadidate取的選票來知道選民實際在該張選票投了幾名候選人,將資料表candidate行合併查詢
如果實際投的人數大於允許人數會以命令signal加上sqlstate代碼退出觸發器、防止寫入資料表ballot_cnadidate,並且會顯示錯誤訊息給使用者
BU型觸發器
要防止其他人員對資料表voter、race、candidate更新資料(寫法如tr_voter_bi)
tr_voter_bu
防止其他使用者更新投票人的資料
tr_race_bu
防止其他使用者更新競選職務的資料
tr_candidate_bu
防止其他使用者更新候選人的資料
BD型觸發器
要防止其他人員對資料表voter、race、candidate刪除資料(寫法如tr_voter_bi)
tr_voter_bd
防止其他使用者刪除投票人的資料
tr_race_bd
防止其他使用者刪除競選職務的資料
tr_candidate_bd
防止其他使用者刪除候選人的資料
下一章:專題二利用觸發器追蹤投票者資料異動(下)
留言
追蹤
檢舉
上一篇
Day14 專題二 利用觸發器追蹤投票者資料異動(上)
下一篇
Day16 專題二 利用觸發器追蹤投票者資料異動(下)
系列文
從零開始的MySQL開發旅程
共
30
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
26
Day26 Firebase Cloud Functions
27
Day27 Firebase Hosting
28
Day28 Hosting 實作練習
29
Day29 Cloud Firestore 實作練習
30
Day30 總結
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
398
組
團體組數
13
組
累計文章數
2817
篇
最後報名日
9/15
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
17th鐵人賽
windows
php
c#
windows server
linux
css
react
熱門問題
不知道網路紅隊的要去那加公司
VMware vCenter Server 不明原因時間跑掉 憑證異常超成一連串異常
更換FW後Public IP service無法使用
鼎新ERP欄位可修改預設值嗎
Ansible 連線主機的 port 不是 22 遇到的問題
備份映像檔
Outlook 寄件備份消失問題 (已解決)
請問有人遇過在lightsail上部屬fastapi失敗的案例?
aws ec2 檢查故障問題
IIS 管理員 連線功能不見
熱門回答
鼎新ERP欄位可修改預設值嗎
不知道網路紅隊的要去那加公司
Ansible 連線主機的 port 不是 22 遇到的問題
更換FW後Public IP service無法使用
備份映像檔
熱門文章
什麼是 Signal ?
序: AI 加速編碼後,你該學什麼?
第10天,No-Code 快速上線又省錢 / 原汁排骨湯 台北最好喝的排骨湯(台北萬華)| 30天滷肉飯
第11天,LibreOffice 更省錢 / 司機俱樂部 宵夜好選擇(台北松山)| 30天滷肉飯
第12天,即時通訊軟體選擇 / 金峰滷肉飯 台北名店(台北中正)| 30天滷肉飯
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}